<?php

/**
 * sfGuardRegisterForm for registering new users
 *
 * @package    sfDoctrineGuardPlugin
 * @subpackage form
 * @author     Jonathan H. Wage <jonwage@gmail.com>
 * @version    SVN: $Id: BasesfGuardChangeUserPasswordForm.class.php 23536 2009-11-02 21:41:21Z Kris.Wallsmith $
 */
class sfGuardRegisterForm extends BasesfGuardRegisterForm
{
  /**
   * @see sfForm
   */
  public function configure()
  {
  
    unset(
      $this['algorithm'], $this['email_address']
    );
    $this->widgetSchema['province']    = new sfWidgetFormDoctrineChoice(array(
      'model' => 'SalviaProvince', 'table_method' => 'getProvincesList', 'key_method' => 'getProvinceId','multiple' => false, 'add_empty' => true, 'order_by' => array('province_id', 'asc')
    ));
    $this->widgetSchema['captcha'] = new sfWidgetCaptchaGD();
    
    foreach ($this->getWidgetSchema()->getFields() as $name=>$field) {
      if($name=='birthday')
        {
          $years = range(Date("Y") - 60, Date("Y") - 10);
          $years_list = array_combine($years, $years); //Creates new array where key and value are both values from $years list
          
          $field->setOption('format','%day%/%month%/%year%');
          $field->setOption('years',$years_list);
          $field->setOption('empty_values',array('year' => 'Năm', 'month' => 'Tháng', 'day' => 'Ngày'));
          
          $field->setAttribute('style', 'width:108px;');
        }
      if($name=='province')
        {
          $field->setOption('add_empty','Chọn thành phố');
        }  
      
    }
    
    $this->setValidators(array(
      'username' => new sfValidatorAnd(array(
              new sfValidatorString(
                  array('required' => true, 'min_length' => 6, 'max_length' => 30), 
                  array( 'min_length' => 'Xin lỗi, tên đăng nhập của bạn phải nằm trong khoảng độ dài ký tự giữa 6 và 30.',
                  'max_length' => 'Xin lỗi, tên đăng nhập của bạn phải nằm trong khoảng độ dài ký tự giữa 6 và 30.')
                  ),
              new sfValidatorRegex(
                  array('pattern' => '/^[A-z0-9]*$/i'),
                  array('invalid' => 'Xin lỗi, tên đăng nhập chỉ chấp nhận các kí tự (A-Z) hoặc (0-9).')
                  ),
              ), array(), array('required' => 'Tên đăng nhập đang để rỗng.')),
       'password' => new sfValidatorAnd(array(
              new sfValidatorString(
                  array('required' => true, 'min_length' => 6, 'max_length' => 15), 
                  array( 'min_length' => 'Xin lỗi, mật khẩu của bạn phải nằm trong khoảng độ dài ký tự giữa 6 và 15.',
                  'max_length' => 'Xin lỗi, mật khẩu của bạn phải nằm trong khoảng độ dài ký tự giữa 6 và 15.')
                  ),
              new sfValidatorRegex(
                  array('pattern' => '/^[A-z0-9]*$/i'),
                  array('invalid' => 'Xin lỗi, mật khẩu chỉ chấp nhận các kí tự (A-Z) hoặc (0-9).')
                  )     
              ), array(), array('required' => 'Mật khẩu đang để rỗng.')),
       'captcha' => new sfValidatorAnd(array(
              new sfCaptchaGDValidator(
                  array('required' => true, 'length' => 3),
                  array( 'invalid' => 'not macth')
                  ),
              new sfValidatorRegex(
                  array('pattern' => '/^[A-z0-9]*$/i'),
                  array('invalid' => 'Xin lỗi, mã kiểm tra chỉ chấp nhận các kí tự (A-Z) hoặc (0-9).')
                  ),
              ), array(), array('required' => 'Mã kiểm tra đang để rỗng.'),array('invalid' => 'Mã kiểm tra đang để rỗng.')),              
    ));
    
    $this->validatorSchema->setOption('allow_extra_fields', true);
	$this->validatorSchema->setOption('filter_extra_fields', false);  
    
  }
}